﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using SistemaGO_Library.Entidades.Ocorrencia;
using SistemaGO_Library;

namespace SistemaGO_Desktop.Visao.Telas
{
    public partial class frmVerificarOcorrencias : Form
    {
        private static frmVerificarOcorrencias instancia = null;
        Ocorrencia oco = new Ocorrencia();
        private Fachada fachada = Fachada.getInstance();
        public int MasterCode;

        private frmVerificarOcorrencias()
        {
            InitializeComponent();
            tbVerificarNomeOcorrencia.Focus();
            dgvVerificarOcorrencias.ShowCellErrors = false;
            dgvVerificarOcorrencias.ShowRowErrors = false;
        }

        public static frmVerificarOcorrencias getInstance() {
            if (instancia == null) {
                instancia = new frmVerificarOcorrencias();
            } else {
                instancia.Focus();
            }
            return instancia;
        }

        private void limparTela() {
            tbVerificarNomeOcorrencia.Text = "";
            cbVerificarBairroOcorrencia.Text = "Selecione";            
            cbVerificarStatusOcorrencia.Text = "Selecione";
        }

        private void btVerificarFiltrarOcorrencia_Click(object sender, EventArgs e) {
            filtrarOcorrencias();
        }

        public void filtrarOcorrencias() { 
            try
              {
                string tbNome = tbVerificarNomeOcorrencia.Text;
                string cbBairro = cbVerificarBairroOcorrencia.Text;
                string cbStatus = cbVerificarStatusOcorrencia.Text;                
                if (!tbNome.Trim().Equals("") || !cbBairro.Equals("Selecione") || !cbStatus.Equals("Selecione"))
                {
                    if (tbNome.Equals("")) {
                        tbNome = "";
                    }
                    if (cbBairro.Equals("Selecione")) {
                        cbBairro = "";
                    }
                    if (cbStatus.Equals("Selecione")) {
                        cbStatus = "";
                    }
                    else {
                        cbStatus = cbStatus.Substring(0, 1);
                    }
                    
                    tbocorrenciaBindingSource.Filter = "denunciante_nome like '%" + tbNome + "%' and ocorrencia_bairro like '%" + cbBairro + "%' and ocorrencia_situacao like'%" + cbStatus + "%'";

                }
                else
                {
                    tbocorrenciaBindingSource.RemoveFilter();
                }
                
                this.tb_ocorrenciaTableAdapter1.queryComAlias(this.sistemaGODataSet4.tb_ocorrencia);
                
                //Se achar irá preencher o DataGrindView e os tornará visible
                btVerificarExplanarOcorrencia.Enabled = true;
                btVerificarVincularFiscalOcorrencia.Enabled = true;
                btVerificarPedidoProposta.Enabled = true;

                if (dgvVerificarOcorrencias.Rows.Count == 0) {
                    btVerificarPedidoProposta.Enabled = false;
                    btVerificarExplanarOcorrencia.Enabled = false;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    MessageBox.Show("Ocorrência(s) não encontrada(s)", "Falha na Busca", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                    
                } else {
                    int cod_ocorrencia = Int32.Parse(dgvVerificarOcorrencias.CurrentRow.Cells[0].Value.ToString());
                    oco = fachada.buscarOcorrencia(cod_ocorrencia);

                    if (oco.Ocorrencia_situacao == "R")
                    {
                        btVerificarExplanarOcorrencia.Enabled = true;
                        btVerificarVincularFiscalOcorrencia.Enabled = true;
                        btVerificarPedidoProposta.Enabled = false;
                    }
                    else if (oco.Ocorrencia_situacao == "F") {
                        btVerificarExplanarOcorrencia.Enabled = true;
                        btVerificarVincularFiscalOcorrencia.Enabled = false;
                        btVerificarPedidoProposta.Enabled = false;
                    }
                    else if (oco.Ocorrencia_situacao == "V") {
                        btVerificarExplanarOcorrencia.Enabled = true;
                        btVerificarVincularFiscalOcorrencia.Enabled = false;
                        btVerificarPedidoProposta.Enabled = true;
                    }
                    else if (oco.Ocorrencia_situacao == "A") {
                        btVerificarExplanarOcorrencia.Enabled = false;
                        btVerificarVincularFiscalOcorrencia.Enabled = false;
                        btVerificarPedidoProposta.Enabled = false;
                    }
                    else if (oco.Ocorrencia_situacao == "T") {
                        btVerificarExplanarOcorrencia.Enabled = false;
                        btVerificarVincularFiscalOcorrencia.Enabled = false;
                        btVerificarPedidoProposta.Enabled = false;
                    }
                    else if (oco.Ocorrencia_situacao == "C") {
                        btVerificarExplanarOcorrencia.Enabled = false;
                        btVerificarVincularFiscalOcorrencia.Enabled = false;
                        btVerificarPedidoProposta.Enabled = false;
                    }
                }
            }
            catch
            {
                //Se não achar irá retornar uma mensagem informando que a ocorrência não foi encontrada
                //MessageBox.Show("Ocorrência(s) não encontrada(s)", "Falha na Busca", MessageBoxButtons.OK, MessageBoxIcon.Information);
                limparTela();
                tbVerificarNomeOcorrencia.Focus();
            }
        }

        private void btVerificarExplanarOcorrencia_Click(object sender, EventArgs e) {
            try
            {
                MasterCode = Int32.Parse(dgvVerificarOcorrencias.CurrentRow.Cells[0].Value.ToString());
                frmExplanarOcorrencia frmexplanarocorrencia = frmExplanarOcorrencia.getInstance();
                frmexplanarocorrencia.oco.Ocorrencia_cod = MasterCode;
                frmexplanarocorrencia.Show();
            }
            catch
            {
                MessageBox.Show("Erro ao tentar explanar a ocorrência", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btVerificarVincularFiscalOcorrencia_Click(object sender, EventArgs e) {
            try
            {
                MasterCode = Int32.Parse(dgvVerificarOcorrencias.CurrentRow.Cells[0].Value.ToString());
                frmVincularFiscal frmvincularfiscal = frmVincularFiscal.getInstance();
                frmvincularfiscal.oco.Ocorrencia_cod = MasterCode;
                frmvincularfiscal.Show();
            }
            catch
            {
                MessageBox.Show("Erro ao tentar vincular fiscal", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btVerificarPedidoProposta_Click(object sender, EventArgs e) {
            try
            {
                MasterCode = Int32.Parse(dgvVerificarOcorrencias.CurrentRow.Cells[0].Value.ToString());
                frmPedidoProposta frmpedidoproposta = frmPedidoProposta.getInstance();
                frmpedidoproposta.pedido.Ocorrencia_cod = MasterCode;
                frmpedidoproposta.Show();
            }
            catch (Exception e2)
            {
                frmPedidoProposta frmpedidoproposta = frmPedidoProposta.getInstance();
                frmpedidoproposta.Close();
                MessageBox.Show(e2.Message, "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        }

        private void frmVerificarOcorrencias_FormClosing(object sender, FormClosingEventArgs e) {
            instancia = null;
        }

        private void cbVerificarBairroOcorrencia_Leave(object sender, EventArgs e)
        {
            if (cbVerificarBairroOcorrencia.Text.Equals(""))
            {
                cbVerificarBairroOcorrencia.Text = "Selecione";
            }
        }

        private void cbVerificarStatusOcorrencia_Leave(object sender, EventArgs e)
        {
            if (cbVerificarStatusOcorrencia.Text.Equals(""))
            {
                cbVerificarStatusOcorrencia.Text = "Selecione";
            }
        }

        private void fillByToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                this.tb_ocorrenciaTableAdapter1.queryComAlias(this.sistemaGODataSet4.tb_ocorrencia);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }

        private void dgvVerificarOcorrencias_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvVerificarOcorrencias.Rows.Count == 0) {
                btVerificarPedidoProposta.Enabled = false;
                btVerificarExplanarOcorrencia.Enabled = false;
                btVerificarVincularFiscalOcorrencia.Enabled = false;
            } else {
                int cod_ocorrencia = Int32.Parse(dgvVerificarOcorrencias.CurrentRow.Cells[0].Value.ToString());
                oco = fachada.buscarOcorrencia(cod_ocorrencia);
                if (oco.Ocorrencia_situacao == "R")
                {
                    btVerificarExplanarOcorrencia.Enabled = true;
                    btVerificarVincularFiscalOcorrencia.Enabled = true;
                    btVerificarPedidoProposta.Enabled = false;
                }
                else if (oco.Ocorrencia_situacao == "F") {
                    btVerificarExplanarOcorrencia.Enabled = true;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    btVerificarPedidoProposta.Enabled = false;
                }
                else if (oco.Ocorrencia_situacao == "V") {
                    btVerificarExplanarOcorrencia.Enabled = true;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    btVerificarPedidoProposta.Enabled = true;
                }
                else if (oco.Ocorrencia_situacao == "A") {
                    btVerificarExplanarOcorrencia.Enabled = false;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    btVerificarPedidoProposta.Enabled = false;
                }
                else if (oco.Ocorrencia_situacao == "T") {
                    btVerificarExplanarOcorrencia.Enabled = false;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    btVerificarPedidoProposta.Enabled = false;
                }
                else if (oco.Ocorrencia_situacao == "C") {
                    btVerificarExplanarOcorrencia.Enabled = false;
                    btVerificarVincularFiscalOcorrencia.Enabled = false;
                    btVerificarPedidoProposta.Enabled = false;
                }
            }
            
        }

        private void queryComAliasToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                this.tb_ocorrenciaTableAdapter1.queryComAlias(this.sistemaGODataSet4.tb_ocorrencia);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }

        private void queryComAliasToolStripButton1_Click(object sender, EventArgs e)
        {
            try
            {
                this.tb_ocorrenciaTableAdapter1.queryComAlias(this.sistemaGODataSet4.tb_ocorrencia);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }

        private void queryComAliasToolStripButton2_Click(object sender, EventArgs e)
        {
            try
            {
                this.tb_ocorrenciaTableAdapter1.queryComAlias(this.sistemaGODataSet4.tb_ocorrencia);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }
    }
}
